/*
		3.13 - Exercícios de Fixação e Sintaxe
		
		Mais exercícios de fixação de sintaxe. Para quem já conhece um pouco de Java, pode ser muito simples;
		mas recomendamos fortemente que você faça os exercícios para se acostumar com erros de compilação,
		mensagens do javac, convenção de código, etc...
		
		Apesar de extremamente simples, precisamos praticar a sintaxe que estamos aprendendo. Para cada exercício,
		crie um novo arquivo com extensão .java, e declare aquele estranho cabeçalho, dando nome a uma classe e
		com um bloco main dentro dele:
		
		class ExercicioX {
			public static void main(String[] args) {
			// seu exercício vai aqui
			}
		}
		
		Não copie e cole de um exercício já existente! Aproveite para praticar.
		
		1) Imprima todos os números de 150 a 300.
		
		2) Imprima a soma de 1 até 1000.
		
		3) Imprima todos os múltiplos de 3, entre 1 e 100.
		
		4) Imprima os fatoriais de 1 a 10.
		
		O fatorial de um número n é n * n-1 * n-2 ... até n = 1. Lembre-se de utilizar os parênteses.
		
		O fatorial de 0 é 1
		
		O fatorial de 1 é (0!) * 1 = 1
		
		O fatorial de 2 é (1!) * 2 = 2
		
		O fatorial de 3 é (2!) * 3 = 6
		
		O fatorial de 4 é (3!) * 4 = 12¦
		
		Faça um for que inicie uma variável n (número) como 1 e fatorial (resultado) como 1 e varia n de 1 até 10:
		
		int fatorial = 1;
		
		for (int n = 1; n <= 10; n++) {
		}
		
		5) No código do exercício anterior, aumente a quantidade de números que terão os fatoriais impressos, até
		20, 30, 40. Em um determinado momento, além desse cálculo demorar, vai começar a mostrar respostas
		completamente erradas. Por quê?
		
		Mude de int para long para ver alguma mudança.
		
		6) (opcional) Imprima os primeiros números da série de Fibonacci até passar de 100. A série de Fibonacci
		é a seguinte: 0, 1, 1, 2, 3, 5, 8, 13, 21, etc... Para calculá-la, o primeiro elemento vale 0, o segundo vale 1, daí
		por diante, o n-ésimo elemento vale o (n-1)-ésimo elemento somado ao (n-2)-ésimo elemento (ex: 8 = 5 + 3).
		
		7) (opcional) Escreva um programa que, dada uma variável x com algum valor inteiro, temos um novo x de
		acordo com a seguinte regra:
		
		* se x é par, x = x / 2
		* se x é impar, x = 3 * x + 1
		* imprime x
		* O programa deve parar quando x tiver o valor final de 1. Por exemplo, para x = 13, a saída será: 40
		-> 20 -> 10 -> 5 -> 16 -> 8 -> 4 -> 2 -> 1
		
		8) (opcional) Imprima a seguinte tabela, usando fors encadeados:
	
		1
		2 4
		3 6 9
		4 8 12 16
		n n*2 n*3 .... n*n
		 
 */
public class ExercicioX {
	
	public static void main(String[] args) {
		
		//Resposta questão 01
		for(int i = 150; i <= 300; i++){
			System.out.println(i);
		}
		
		//Resposta questão 02
		int soma = 1;
		while(soma<=1000){
			soma = soma + soma;
			if(soma<=1000){
				System.out.println(soma);
			}
		}
		
		// Resposta questão 03
		int multiplos = 3;		
		while(multiplos < 100){
			System.out.println(multiplos);
			multiplos = multiplos + 3;
		}
		
		// Resposta questão 04
		Integer contador = 1;
		
		while(contador<=10){
			System.out.println(contador+"! "+"= " + ExercicioX.fatorialDeUmNumero(contador));
			contador++;
		}
		
	}
	
	public static String fatorialDeUmNumero(Integer numero){
		String concatenacao = "fatorial";
		
		return concatenacao;
	}

}
